
var express = require('express');
var router = express.Router();
// 开始做项目了可以去掉这部分恢复到仅注册功能
// var mgdb = require('../../utls/mgdb')
var jwt = require('../../utls/jwt');
let bcrypt = require('../../utls/bcrypt')
var path = require('path');
const fs = require('fs');
var {open} = require('../../utls/mgdb')
/* GET home page. */
router.post('/', function(req, res, next) {
    console.log('reg')
    // 获取username password nikename icon,头像不从body里取
    let {username,password,nikename} = req.body;
    // 校验必传参数
    if(!username || !password){
        res.send({err:1,msg:'用户名和密码都是必传参数，不能为空'})
        return;
    }
    // 参数整理
    nikename = nikename || '默认昵称123'
    let follow = 0;
    let fans = 0;
    let time = Date.now();//服务器时间
    let icon = '/upload/marc.jpg';
    // 判断用户是否传了头像
    if(req.files && req.files.length>0){
        fs.renameSync(
            req.files[0].path,
            req.files[0].path + path.parse(req.files[0].originalname).ext
        )
        icon = '/upload/user/'+req.files[0].filename + path.parse(req.files[0].originalname).ext
    }
        console.log(icon)
    console.log(8888)
    
    // 兜库
    // 开库
    open({
        collectionName:'user'
    }).then(
        ({collection,client})=>{
            collection.find({username}).toArray((err,result)=>{
                if(err){
                    res.send({err:1,msg:'集合操作失败，请重试'})
                    client.close()
                }else{
                    if(result.length ===0){
                // 找用户名--没有才可以注册--注册入库要加密
                        collection.insertOne({
                            username,
                            password:bcrypt.hashSync(password,10),
                            nikename,fans,follow,time,icon
                        },(err,result)=>{
                            if(!err){
                                res.send({
                                    err:0,msg:'注册成功',data:{
                                        _id:result.insertedId,nikename,fans,follow,time,icon
                                    }
                                })
                            }else{
                                res.send({err:1,msg:'集合操作失败，请重试'})
                            }
                            client.close()
                        })
                    }else{
                // 存在，不可注册
                        if(icon.indexOf('marc.jpg') === -1){
                            fs.unlinkSync('./public'+icon)
                        }
                        res.send({err:1,msg:'注册失败，该用户已存在'})
                    client.close()

                    }
                }
            })
        }
    ).catch (err=>res.send(err))
    // 生成token的包-->需要自己去找生成昵称的包
    let token = jwt.sign({username:'ftt123',_id:'123123123123123123123123'})
    console.log(token)
    })
module.exports = router;

    // console.log(req.query._page)
    // console.log(req.query._limit)
    // mgdb.findDetail({
    //     collectionName:'banner',
        
    // }).then(
    //     res => console.log('reg',res)
    // ).catch(
    //     err => console.log('reg',err)
    // )
// let {_page,_limit,q,sort} = req.query;
// let hash = bcrypt.hashSync(req.body.password)//加密过得hash
// console.log('hash',hash)
// // 入库

// // 校验正确性
// console.log(bcrypt.compareSync(req.body.password,hash))
// console.log(bcrypt.compareSync(req.body.password,hash+'ftt'))
// })

// mgdb.findList({
//     collectionName:'banner',
//     _page,_limit,q,sort
// }).then(
//     res => console.log('reg1',res)
// ).catch(
//     err => console.log('reg2',err)
// )

//     try{
//         let detail = await mgdb.findList({collectionName:"banner"})
//         console.log('reg1',detail)
//     }catch(err){
//         console.log('reg2',err)
//     }
// })

// ↑↑开库不用自己开了
    // console.log('reg',req.url)
    // console.log('address',req.query)//地址栏信息
    // console.log('！address',req.body)//非地址栏信息--脚本自带不用装bodyparser
    // console.log('session',req.session)
    // console.log('multer',req.files)//文件体
// postman什么都没传的时候会打印一堆，至少不是undefined，因为parser装上了
// mgdb.open({
//     collectionName:'banner'
//   }).then(
//       ({collection,client})=>{
//           collection.find({},{sort:{age:1},projection:{address:0},skip:3,limit:3}).toArray((err,result)=>{
//               console.log(result);
//               client.close()
//           })
//       }
//     )
// })
/* .then(
//     // ({collection,client})=>{
//     //   collection.find({},{sort:{age:1},projection:{address:0},skip:3,limit:3}).toArray((err,result)=>{
//     //     // result == array
//     //     // console.log(result);
//     //     client.close();//关库
//     //   })
//     // }
//   ) */
    
// 注册是向数据库里添加一条数据，vscode思想融进来？业务是添加一条数据，请求姿势是post